package ch.mailbox;

import java.util.ArrayList;
import java.util.Iterator;


/** Classe per l'iterazione degli utenti registrati.
 * 
 * @author Neil Otupacca - May 21 2011
 *
 */
public class IteratorUser implements Iterator<User> {

	private ArrayList<User> usersArray;
	private Iterator<User> usersIterator;

	/** Constructor dell'iteratore (accesso package).
	 *
	 * @param user - utente a cui è stata richiesto l'iteratore.
	 */
	@SuppressWarnings("unchecked")
	IteratorUser(User user) {
		// Carica tutti gli user dal database
		usersArray = (ArrayList<User>) user.getPersistentObjectList(false, "lastName, firstName");
		usersIterator = usersArray.iterator();
	}

	/** Ritorna <i>true</i> se ci sono ancora utenti da iterare.
	 * 
	 * @return <b>true</b> o <b>false</b>.
	 */
	@Override
	public boolean hasNext() {
		return(usersIterator.hasNext());
	}

	/** Ritorna il prossimo utente dell'iterazione.
	 * 
	 * @return prossimo utente dell'iterazione.
	 */
	@Override
	public User next() {
		return(usersIterator.next());
	}

	/** Rimuove dalla collection dell'iteratore l'ultimo utente
	 * ritornato da next().
	 *
	 */
	@Override
	public void remove() {
		usersIterator.remove();
	}
}
